package net.siufung.market.base.permit.service;

import cn.hutool.core.lang.tree.Tree;
import net.siufung.market.base.permit.controller.model.dto.MenuTreeTableParams;
import net.siufung.market.base.permit.mapper.entity.Menu;

import java.util.List;

/**
 * @author 陈建峰
 * @since 2022/7/11 10:24 下午
 */
public interface IMenuQueryService {

    /**
     * 获取系统菜单树
     * @param parentId 菜单父级Id
     * @param hasAccess 存在访问权限
     * @return List<Menu>
     * */
    List<Menu> getTreeMenuList(Integer parentId, Boolean hasAccess);

    /**
     * 获取系统菜单树
     * @param clientId 应用Id
     * @param parentId 菜单父级Id
     * @param hasAccess 存在访问权限
     * @return List<Menu>
     * */
    List<Menu> getTreeMenuList(String clientId, Integer parentId, Boolean hasAccess);

    /**
     * 获取系统菜单树
     * @param parentId 菜单父级Id
     * @param hasAccess 存在访问权限
     * @return List<Tree<Integer>>
     * */
    List<Tree<Integer>> getTreeList(Integer parentId, Boolean hasAccess);

    /**
     * 获取系统菜单树
     * @param clientId 应用Id
     * @param parentId 菜单父级Id
     * @param hasAccess 存在访问权限
     * @return List<Tree<Integer>>
     * */
    List<Tree<Integer>> getTreeList(String clientId, Integer parentId, Boolean hasAccess);

    /**
     * 获得树列表
     * @param menuTreeTableParams 菜单树表格参数
     * @return List<Tree<Integer>>
     */
    List<Tree<Integer>> getTreeTable(MenuTreeTableParams menuTreeTableParams);
}
